# Ex 3 # n dimensão da amostra de X # p vector de probabilidades rX <- function(n, p) { set.seed(1) # gerar uniform(0,1) U <- runif(n) # Vector para guardar a geração de X X <- rep(0,n) # Qual dos U's pertence a [0,p1] w1 <- which(U < p[1]) X[w1] <- 1 # which U are in the second interval w2 <- which( (U >= p[1]) & (U < sum(p[1:2])) ) X[w2] <- 2 # which U are in the third interval w3 <- which( U >= sum(p[1:2]) ) X[w3] <- 3 return(X) } X = rX(10000, c(.4, .25, .35)) # Verificação resul=c(mean(X==1),mean(X==2),mean(X==3)) ################################################################ # Bernoulli ####################################### n <- 10000 ; set.seed(1); p <- 0.4 u <- runif (n) x <- as.integer(u <= p) #(u <= 0.4) mean (x); var(x) ######################################### my.bernoulli <- c() n <- 10000 p <- 0.4 set.seed(1) for(i in 1:n){ u <- runif(1) if(u <= p) my.bernoulli[i] <- 1 else my.bernoulli[i] <- 0 } print(c(head(my.bernoulli), tail(my.bernoulli))) mean(my.bernoulli) ########################################################### # # Transformação inversa para a geração de Exp(1) ############################################################ inverse_exp<-function(u,mu=1){ return(-log(u)/mu) } compare_data<-data.frame(inv_data=inverse_exp(u=runif(1000)),rexp_data=rexp(1000)) library(ggplot2) library(patchwork) p1 <- ggplot(data=compare_data) + geom_histogram(aes(x=inv_data),binwidth=0.2) p2 <- ggplot(data=compare_data) + geom_histogram(aes(x=rexp_data),binwidth=0.2) p1 + p2